package managedBean;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import br.edu.ifpb.entidade.Administrador;
import br.edu.ifpb.entidade.Agencia;

@ManagedBean
@SessionScoped
public class LoginBean extends GenericBean {

	private String login;
	private String senha;
	private Administrador administrador;
	private Agencia agencia;
	
	public LoginBean() {
		// TODO Auto-generated constructor stub
	}
	
	public LoginBean(Agencia agencia) {
		setAgencia(agencia);
	}
	
	public LoginBean(Administrador administrador) {
		
		setAdministrador(administrador);
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String fazerLogin() {

		if ((login.equals("admin")) && (senha.equals("admin"))) {

			administrador = new Administrador(login, senha);
			
			LoginBean loginBean = new LoginBean(administrador);

			GenericBean.setSessionValue("loginBean", loginBean);

			return "menuAdmin.jsf";

		} else {

			EntityManagerFactory emf = Persistence
					.createEntityManagerFactory("QBank");

			EntityManager em = emf.createEntityManager();

			agencia = em
					.createNamedQuery("Agencia.findByMatricula", Agencia.class)
					.setParameter("matricula", login)
					.setParameter("senha", senha).getSingleResult();

			System.out.println(agencia.getNomeGerente());
			
			LoginBean loginBean = new LoginBean(agencia);

			GenericBean.setSessionValue("loginBean", loginBean);

			return "menuGerente.jsf";

		}

	}
	
	public void logout(){
		GenericBean.resetSessionScopedBean("loginBean");
		GenericBean.sendRedirect("index.jsf");
	}

	public Administrador getAdministrador() {
		return administrador;
	}

	public void setAdministrador(Administrador administrador) {
		this.administrador = administrador;
	}

	public Agencia getAgencia() {
		return agencia;
	}

	public void setAgencia(Agencia agencia) {
		this.agencia = agencia;
	}
}
